メインコンテンツにスキップ

開発プレフィックス: get, find, fetch, load, retrieve - 違いと使用ルールを理解する

  • プログラミング言語を使用する際、getfindfetchloadretrieveというプレフィックス(接頭辞)がメソッドや関数名に使用されることがあります。データベースや外部ファイル、APIからデータを取得する場合によく使用されます。
  • 開発を進めるうちに、一貫性を持ってコードを書きたいと思うようになり、これらのプレフィックスの違いと使用場面について気になりました。これらのプレフィックスの違いと使用場面について調べてみました。
  • 命名規則は会社や開発者によって異なる場合があります。今回は一般的に使用される規則を探してみましたが、実際には使用場面によって異なる可能性があります。
  • これらのプレフィックスは似ているように見えますが、それぞれの意味と使用される文脈は少し異なるようです。それらの違いを見ていきましょう。
  • 大企業で確立された開発規約で開発を進めた経験がないため、この話題に関する知識はやや限られています。内容が完全に正確ではない可能性がありますので、参考程度に読んでいただければ幸いです。

1. get

getプレフィックスは、特定の値を取得したりアクセスしたりする際によく使用されます。これは、その操作が単一の結果またはコレクションから特定の項目を返すことを意味します。例えば:

  • getUser() - 単一のユーザーオブジェクトを取得します。
  • getProductById(id) - 提供されたIDに対応する製品オブジェクトを取得します。
  • getUsers() - すべてのユーザーオブジェクトを取得します。

2. find

findプレフィックスは、一致する条件を持つ項目または複数の項目を検索し、見つける際に一般的に使用されます。getとの違いは、findは検索、見つけることに少し焦点が当てられている感じがしました。これは、その操作が複数の結果または項目のコレクションを返すことを意味します。例えば:

  • findUsersByRole(role) - 特定の役割を持つすべてのユーザーを見つけます。
  • findProductsByCategory(category) - 特定のカテゴリーに属するすべての製品を見つけます。
  • findUsersByAge(age) - 特定の年齢に該当するすべてのユーザーを見つけます。

2.1. find vs get

  • 正式に定義された内容ではありませんが、インターネット上でさまざまな人々が議論している内容を見ると、findgetの違いは次のとおりです:
    • get: 明確に決定されたものを取得することに焦点が当てられています。単一の結果または項目を返し、結果がない場合にはあまり使用されないようです。
    • find: 検索、見つけることに焦点が当てられています。複数の結果または項目のコレクションを返し、検索結果が空の場合もあります。
  • How do you use "find" vs "get" prefix?のブログ記事の例が、この内容を理解するのに役立ちます。以下はその記事から引用した例です:
    • getOneById: そのIDに対応する結果がない場合、エラーをスローします。
    • findOneById: そのIDに対応する結果がない場合、nullを返します。
public async getOneById(id: number): Promise<User> {
const user = await this.userRepository
.createQueryBuilder("u")
.where("u.id = :id", {id})
.getOne();

if (!user)
throw new Error(`User with ID "${id.toString()}" not found.`);

return user;
}
public async findOneById(id: number): Promise<User> {
const user = await this.userRepository
.createQueryBuilder("u")
.where("u.id = :id", {id})
.getOne();

return user;
}

3. fetch vs load vs retrieve

  • fetchloadretrieveプレフィックスは、データを取得する際に使用される他のプレフィックスです。これらは主にネットワークからデータを取得したり、データベースからデータを取得したりする際に使用されます。これらの違いは明確ではありませんが、一般的には次のように使用されます:
    • fetch: ネットワークからデータを取得する際に使用されます。主にAPI呼び出しに関連しているようです。
    • load: データベースやS3のファイルデータなどの外部データを取得する際によく使用されます。
    • retrieve: データを取得する際に使用されます。fetchloadより使用頻度は少ないようです。

4. まとめ

  • getは単一の結果または項目を取得する際に使用され、findは複数の結果または項目を検索する際に使用されるようです。
  • fetchloadretrieveはデータを取得する際に使用され、fetchはネットワークからデータを取得する際に使用され、loadはデータベースやファイルデータを取得する際に使用され、retrieveはデータを取得する際に使用されるようです。
    • ただし、fetchloadretrieveの使用頻度はgetfindより少なく、区別は比較的明確ではないようです。
  • これらのプレフィックスは一般的な使用ルールであり、実際には使用場所や使用するプログラミング言語、フレームワークによって異なる可能性があります。正確な使用法については、プロジェクト固有のドキュメントやコーディング標準を参照してください。

参考文献